// pages/nfc-read/nfc-read.js
import { parseNfcData, nfcManager } from '../../utils/nfc.js'

Page({
  data: {
    nfcData: null,
    tagInfo: {
      tagType: '',
      content: '',
      details: '',
      isMiniProgramSupported: false,
      urlScheme: '',
      techs: []
    },
    isReading: false,
    errorMessage: ''
  },

  onLoad() {
    this.initNfc()
  },

  onShow() {
    // 页面显示时重新初始化NFC
    this.initNfc()
  },

  onHide() {
    // 页面隐藏时停止NFC
    this.stopNfc()
  },

  onUnload() {
    this.stopNfc()
  },

  // 初始化NFC
  initNfc() {
    console.log('NFC读取页面初始化')
    
    // 使用全局NFC管理器初始化
    const isSupported = nfcManager.init('nfc-read')
    
    if (!isSupported) {
      wx.showToast({
        title: '设备不支持NFC',
        icon: 'none'
      })
    }
    
    console.log('NFC读取页面初始化完成')
  },

  // 开始NFC监听
  startNfc() {
    this.setData({ isReading: true, errorMessage: '' })

    // 使用全局NFC管理器开始发现
    const success = nfcManager.startDiscovery((res) => {
      console.log('NFC标签发现:', res)
      this.handleNfcData(res)
    }, 'nfc-read')

    if (success) {
      wx.showToast({
        title: '请将NFC标签贴近手机',
        icon: 'none',
        duration: 2000
      })
    } else {
      this.setData({ 
        isReading: false,
        errorMessage: 'NFC启动失败'
      })
    }
  },

  // 停止NFC监听
  stopNfc() {
    try {
      // 使用全局NFC管理器清理页面资源
      nfcManager.cleanupPage('nfc-read')
      console.log('NFC读取页面已停止')
    } catch (error) {
      console.log('停止NFC读取时出错:', error)
    }
    
    // 重置所有状态
    this.setData({ 
      isReading: false
    })
  },

  // 处理NFC数据
  handleNfcData(nfcData) {
    try {
      const tagInfo = parseNfcData(nfcData)
      this.setData({
        nfcData: nfcData,
        tagInfo: tagInfo
      })

      // 自动停止NFC读取
      this.stopNfc()

      // 显示读取结果
      let message = `标签类型: ${tagInfo.tagType}\n`
      message += `支持小程序: ${tagInfo.isMiniProgramSupported ? '是' : '否'}\n`
      if (tagInfo.urlScheme) {
        message += `URL Scheme: ${tagInfo.urlScheme}`
      }

      wx.showModal({
        title: 'NFC标签读取成功',
        content: message,
        showCancel: false
      })

    } catch (error) {
      console.error('解析NFC数据失败:', error)
      this.setData({
        errorMessage: '解析NFC数据失败: ' + error.message
      })
      this.stopNfc()
    }
  },

  // 开始读取
  onStartRead() {
    this.setData({
      nfcData: null,
      tagInfo: {
        tagType: '',
        content: '',
        details: '',
        isMiniProgramSupported: false,
        urlScheme: '',
        techs: []
      },
      errorMessage: ''
    })
    this.startNfc()
  },

  // 停止读取
  onStopRead() {
    this.stopNfc()
  },

  // 复制URL Scheme
  onCopyScheme() {
    if (this.data.tagInfo.urlScheme) {
      wx.setClipboardData({
        data: this.data.tagInfo.urlScheme,
        success: () => {
          wx.showToast({
            title: '已复制到剪贴板',
            icon: 'success'
          })
        }
      })
    }
  }
})
